home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / rhythmbox / plugins / magnatune / TrackListHandler.pyc (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  3.4 KB  |  99 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import rhythmdb
  5. import xml.sax as xml
  6. import xml.sax.handler as xml
  7. import datetime
  8.  
  9. class TrackListHandler(xml.sax.handler.ContentHandler):
  10.     
  11.     def __init__(self, db, entry_type, sku_dict, home_dict, buy_dict, art_dict):
  12.         xml.sax.handler.ContentHandler.__init__(self)
  13.         self._TrackListHandler__db = db
  14.         self._TrackListHandler__entry_type = entry_type
  15.         self._TrackListHandler__sku_dict = sku_dict
  16.         self._TrackListHandler__home_dict = home_dict
  17.         self._TrackListHandler__buy_dict = buy_dict
  18.         self._TrackListHandler__art_dict = art_dict
  19.         self._TrackListHandler__track = { }
  20.  
  21.     
  22.     def startElement(self, name, attrs):
  23.         self._TrackListHandler__text = ''
  24.  
  25.     
  26.     def endElement(self, name):
  27.         if name == 'Track':
  28.             
  29.             try:
  30.                 if 'oggurl' in self._TrackListHandler__track:
  31.                     trackurl = self._TrackListHandler__track['oggurl']
  32.                 else:
  33.                     trackurl = self._TrackListHandler__track['url']
  34.                 entry = self._TrackListHandler__db.entry_lookup_by_location(trackurl)
  35.                 if entry == None:
  36.                     entry = self._TrackListHandler__db.entry_new(self._TrackListHandler__entry_type, trackurl)
  37.                 
  38.                 
  39.                 try:
  40.                     year = parse_int(self._TrackListHandler__track['year'])
  41.                     if year <= 0:
  42.                         raise ValueError
  43.                     year <= 0
  44.                 except ValueError:
  45.                     year = parse_int(self._TrackListHandler__track['launchdate'][0:4])
  46.  
  47.                 date = datetime.date(year, 1, 1).toordinal()
  48.                 
  49.                 try:
  50.                     tracknum = parse_int(self._TrackListHandler__track['tracknum'])
  51.                 except ValueError:
  52.                     tracknum = 0
  53.  
  54.                 
  55.                 try:
  56.                     duration = parse_int(self._TrackListHandler__track['seconds'])
  57.                 except ValueError:
  58.                     duration = 0
  59.  
  60.                 self._TrackListHandler__db.set(entry, rhythmdb.PROP_ARTIST, self._TrackListHandler__track['artist'])
  61.                 self._TrackListHandler__db.set(entry, rhythmdb.PROP_ALBUM, self._TrackListHandler__track['albumname'])
  62.                 self._TrackListHandler__db.set(entry, rhythmdb.PROP_TITLE, self._TrackListHandler__track['trackname'])
  63.                 self._TrackListHandler__db.set(entry, rhythmdb.PROP_TRACK_NUMBER, tracknum)
  64.                 self._TrackListHandler__db.set(entry, rhythmdb.PROP_DATE, date)
  65.                 self._TrackListHandler__db.set(entry, rhythmdb.PROP_GENRE, self._TrackListHandler__track['mp3genre'])
  66.                 self._TrackListHandler__db.set(entry, rhythmdb.PROP_DURATION, duration)
  67.                 key = str(trackurl)
  68.                 sku = intern(str(self._TrackListHandler__track['albumsku']))
  69.                 self._TrackListHandler__sku_dict[key] = sku
  70.                 self._TrackListHandler__home_dict[sku] = str(self._TrackListHandler__track['home'])
  71.                 self._TrackListHandler__buy_dict[sku] = str(self._TrackListHandler__track['buy'].replace('buy_album', 'buy_cd', 1))
  72.                 self._TrackListHandler__art_dict[sku] = str(self._TrackListHandler__track['cover_small'])
  73.                 self._TrackListHandler__db.commit()
  74.             except Exception:
  75.                 e = None
  76.                 print "Couldn't add %s - %s" % (self._TrackListHandler__track['artist'], self._TrackListHandler__track['trackname']), e
  77.  
  78.             self._TrackListHandler__track = { }
  79.         elif name == 'AllSongs':
  80.             pass
  81.         else:
  82.             self._TrackListHandler__track[name] = self._TrackListHandler__text
  83.  
  84.     
  85.     def characters(self, content):
  86.         self._TrackListHandler__text = self._TrackListHandler__text + content
  87.  
  88.  
  89.  
  90. def parse_int(s):
  91.     news = ''
  92.     for c in s:
  93.         if c in '0123456789':
  94.             news += c
  95.             continue
  96.     
  97.     return int(news)
  98.  
  99.